package com.jiang.daily.Q80;

/**
 * @author Jiang
 * @version 1.0
 * @date 2025/02/09 20:39
 */
class Solution {
    public int removeDuplicates(int[] nums) {
        // 用一个临时变量表示第一次出现重复元素
        // int sum = 1;
        // int temp = (int) 1e9;
        // for (int i = 1, j = -1; i < nums.length; i++) { // j表示要替换的位置
        //     if (nums[i] != nums[i - 1]) { // 出现新元素
        //         sum++;
        //         if (j != -1) {
        //             nums[j] = nums[i];
        //             j++;
        //         }
        //     } else if (temp != nums[i]) { // 第一次出现重复元素
        //         sum++;
        //         temp = nums[i];
        //         if (j != -1) {
        //             nums[j] = nums[i];
        //             j++;
        //         }
        //     } else if (j == -1) { // 不是第一次出现重复元素，且替换的位置没初始化
        //         j = i;
        //     }
        // }
        // return sum;

        // 双指针法
        int fast = 2, slow = 2;
        while (fast < nums.length) {
            if (nums[fast] != nums[slow - 2]) {
                nums[slow++] = nums[fast];
            }
            fast++;
        }
        return slow;

        // 单指针法
        // int i = 0;
        // for (int num: nums) {
        //     if (i < 2 || num > nums[i]) {
        //         nums[i++] = num;
        //     }
        // }

        // return i;
    }
}
